有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java支付可以工作,但用户永远不知道它是订阅还是Paypal页面上的一次性支付

因此,我将Paypal集成到我的支付流程中,结果如下:

  • 用户出现在页面上。单击“付款”按钮
  • 用户首先被重定向到调用SetExpressCheckout的页面,然后被重定向到Paypal。(比如说77美元,他要开一次账单,然后每月开一次账单,为期一年。因此我没有设定初始金额,而是直接扣除。)
  • 返回时,他单击确认按钮,使用DoExpressCheckout扣除一次性付款,并创建账单配置文件

一切正常。我每个月都收到付款。用户在开始时没有两次计费

问题是:当用户被重定向到Paypal时,他只看到我设置的项目名称描述。也就是说,Paypal没有说明交易是一次性的还是订阅,就像您使用简单的订阅按钮进行支付一样。Paypal只提到金额,但没有提到交易类型

NVPEncoder encoder = new NVPEncoder();

encoder.add("METHOD","SetExpressCheckout");
encoder.add("RETURNURL",returnURL);
encoder.add("CANCELURL",cancelURL);             
encoder.add("CURRENCYCODE","USD");
encoder.add("AMT",amt);
encoder.add("BILLINGPERIOD", "Month");
encoder.add("BILLINGFREQUENCY", "1");
encoder.add("PROFILESTARTDATE",dateFormatGmt.format(new Date()));
encoder.add("L_BILLINGTYPE0", "RecurringPayments");
encoder.add("L_BILLINGAGREEMENTDESCRIPTION0",package_name);
encoder.add("L_NAME0",package_name);
encoder.add("L_AMT0",amt);
encoder.add("L_QTY0","1");

String strNVPRequest = encoder.encode();
String ppresponse = (String) caller.call(strNVPRequest);
NVPDecoder resultValues = new NVPDecoder();
resultValues.decode(ppresponse);
String strAck = resultValues.get("ACK"); 
if (strAck !=null && !(strAck.equals("Success") || 
            strAck.equals("SuccessWithWarning"))) {
    response.sendRedirect("APIError.jsp");
} else {
    response.sendRedirect(redirectUrl);
}

共 (1) 个答案

  1. # 1 楼答案

    你是否包括L_BILLINGTYPE0=RecurringPayments
    这就是贝宝登陆页面上应该改变的措辞

    重述;使用(至少)以下参数调用以下API调用:

    SetExpressCheckout

    $nvps = array();
    $nvps["VERSION"] = "80.0";
    
    $nvps["METHOD"] = "SetExpressCheckout";
    
    $nvps["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
    $nvps["PAYMENTREQUEST_0_AMT"] = "1.00";
    $nvps["PAYMENTREQUEST_0_CURRENCYCODE"] = "GBP";
    $nvps["PAYMENTREQUEST_0_ITEMAMT"] = "1.00";
    
    $nvps["L_BILLINGTYPE0"] = 'RecurringPayments';
    $nvps["L_BILLINGAGREEMENTDESCRIPTION0"] = "the subscription";
    
    $nvps["L_PAYMENTREQUEST_0_NUMBER0"] = 1;
    $nvps["L_PAYMENTREQUEST_0_NAME0"]= "subscription";
    $nvps["L_PAYMENTREQUEST_0_AMT0"]= 1.00;
    $nvps["L_PAYMENTREQUEST_0_QTY0"]= 1;
    

    CreateRecurringPaymentsProfile与:

    $nvps["PROFILESTARTDATE"] = "2011-07-08T17:40:00Z";
    $nvps["BILLINGPERIOD"] = "Month";
    $nvps["BILLINGFREQUENCY"] = "1";
    $nvps["AMT"] = "1.00";
    $nvps["CURRENCYCODE"] = "GBP";
    $nvps["DESC"] = "the subscription";